#include <iostream>

using namespace std;

/**
 * 在控制台展示用户提供的 int 类型数据
 * 
 * @param arr      用户提供的 int 类型数组
 * @param capacity 用户提供数组对应的容量
 */

void show_int_arry(int arr[], int capacity);

/*
int arr[10] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};

用户指定替换元素的下标位置 5，替换使用的新元素 20，最红结果
    1.需要知晓被替换掉的元素情况
    2.数组的数据内容替换之后
        {1， 3， 5， 7， 9， 20，4， 6， 8，10}
【隐含一定的条件约束】
    对用户提供的xia
*/
int main(int argc, char const *argv[])
{
    /**
     * 替换制定下标元素的原 int 类型数据，数组容量为 10
     */
    int arr[10] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
    /**
     * 用户指定下标位置
     */
    int index = 2;
    /**
     * 用户指定替换目标元素使用的新数据
     * target new_value new_element
     */
    int new_velue = 20;

    /*
    1.用户提供下标位置的合法性判断，当前数组容量为 10，对应下标
    有效位置是 0 ~ 9，如果用户提供的下标位置超出当前范围，后续替换操作不执行
    */
   if (index < 0 || index > 10 -1)
   {
        // 给予用户必要的操作提示
        cout << "亲，您提供的下表数据有错 ";
        // 利用 return 关键字对当前函数进行退出操作。
        return 0;
    }
    /*
    2. 根据用户指定的下标位置，将被替换掉元素进行提取操作
    */
   int old_value = arr[index];

   /*
   3. 使用 new_value 覆盖指定下标元素
   */
  arr[index] = new_velue;

  /*
  相关数据展示
        a. 被替换的元素
        b. 当前数组的数据情况
  */
    cout << "被替换的元素为 ： ‘" << old_value << endl;
    cout << "当前数组的情况 ：";
    show_int_arry(arr, 10);

    return 0;
   }

   void show_int_array(int arr[], int capacity)
   {
    cout << '[';
    for (int i = 0; i < capacity - 1; i++)
    {
        cout << arr[i] <<  ", ";
    }
    if (0 == capacity)
    {
        cout << ']';
    }
    else\
    {
            cout << arr[capacity - 1] << ']' << endl;
    }
    
   }
   
    
